送走學長之後,我繼續窩在房間裡翻課本。下一章寫著「Stack 與 Queue」。
「終於講到 Queue 了!但是 Stack 要跟它一起上嗎?」我猜想這兩個資料結構應該有點關係吧。
果不其然,書上寫著:Stack 和 Queue 一樣都是線性結構,進出有固定的順序。不同的是——Queue 是先進先出,新增在尾端、刪除在前端;而 Stack 則是後進先出,新增和刪除都只能在同一端。
「Queue 的例子很好找,排隊買東西不就是嗎?」我嘀咕著,「可 Stack 的例子呢?生活裡真的有嗎?」
我愣了半天,腦袋一片空白。
「找不到嗎?明明就在你身邊啊。」那個熟悉的聲音忽然冒出來。果然,又是那個孩子。
「你又來了!」我瞪大眼睛。
「對啊,想我了嗎?」他笑嘻嘻的樣子讓我牙癢。
「才沒有!」我小聲嘟囔,心裡卻忍不住想:要不是你,我還能偷懶不讀這些。
孩子晃著手指:「你會找不到,是因為沒有抓到重點。Queue 要能從兩端操作,一邊進一邊出;但 Stack 的規則是入口就是出口。所以你要找的,是那種只能從一個口進出東西的情境。」
我依言搜尋腦海裡的畫面,想到了垃圾桶,還有我們寢室。
「垃圾桶?房間?」孩子挑眉,「不對啦。垃圾桶裡的東西大小形狀都不一樣,沒辦法整齊疊起來。至於房間,你也得先定義『誰』在進出,這樣解釋就模糊了。」
我煩躁地抓了抓頭髮:「不是說就在我身邊嗎?我真的想不到啊!」
孩子忍不住笑了:「你桌上的串燒呢?」
我一愣,轉頭望向桌上買來當晚餐、還沒動的串燒。
「你說這是 Stack?」
「沒錯呀!」孩子拍拍手,「想想看,你吃的時候是不是從最前端開始?先插上的那塊肉,會被最後才吃到;最後插上的那塊,反而最先入口。這不就是後進先出嗎?」
我盯著那串串燒,忽然覺得這例子竟然有點說服力。